package com.sun.study;

/**
 * @Author Sun
 * @Date 2020/4/12 18:19
 * @Version 1.0
 */
/*
     类的加载顺序
 */
public class testReflection_05 {
    static {
        System.out.println("main类被加载");
    }

    public static void main(String[] args) throws ClassNotFoundException {
        //主动引用，会发送类的初始化
        //Son son = new Son();

        // 通过反射也可以主动引用
        //Class.forName("com.sun.study.Son");

        // 被动引用，不会发生类的初始化
        //System.out.println(Son.a);//子类调用父类的静态变量，不会导致子类初始化

        //Son[] sons = new Son[5];//只有Main类被初始化，因为只是开辟了一片内存空间
        System.out.println(Son.b);//调用常量不会初始化所在类
    }
}

class Father{
    static final int a = 1;
    static {
        System.out.println("父类被加载");
    }
}

class Son extends Father{
    static  int b =1;
    static {
        System.out.println("子类被加载");
    }
}